Package de.yaams.extensions.substance

Source Code of de.yaams.extensions.substance.SubstancePlugin

/**
*
*/
package de.yaams.extensions.substance;

import java.util.HashMap;

import javax.swing.JFrame;
import javax.swing.JRootPane;
import javax.swing.UIManager;

import org.pushingpixels.substance.api.SubstanceLookAndFeel;
import org.pushingpixels.substance.api.skin.AutumnSkin;
import org.pushingpixels.substance.api.skin.BusinessBlackSteelSkin;
import org.pushingpixels.substance.api.skin.BusinessBlueSteelSkin;
import org.pushingpixels.substance.api.skin.BusinessSkin;
import org.pushingpixels.substance.api.skin.ChallengerDeepSkin;
import org.pushingpixels.substance.api.skin.CremeCoffeeSkin;
import org.pushingpixels.substance.api.skin.CremeSkin;
import org.pushingpixels.substance.api.skin.DustCoffeeSkin;
import org.pushingpixels.substance.api.skin.DustSkin;
import org.pushingpixels.substance.api.skin.EmeraldDuskSkin;
import org.pushingpixels.substance.api.skin.GeminiSkin;
import org.pushingpixels.substance.api.skin.GraphiteAquaSkin;
import org.pushingpixels.substance.api.skin.GraphiteGlassSkin;
import org.pushingpixels.substance.api.skin.GraphiteSkin;
import org.pushingpixels.substance.api.skin.MagellanSkin;
import org.pushingpixels.substance.api.skin.MistAquaSkin;
import org.pushingpixels.substance.api.skin.MistSilverSkin;
import org.pushingpixels.substance.api.skin.ModerateSkin;
import org.pushingpixels.substance.api.skin.NebulaBrickWallSkin;
import org.pushingpixels.substance.api.skin.NebulaSkin;
import org.pushingpixels.substance.api.skin.OfficeBlue2007Skin;
import org.pushingpixels.substance.api.skin.OfficeSilver2007Skin;
import org.pushingpixels.substance.api.skin.RavenSkin;
import org.pushingpixels.substance.api.skin.SaharaSkin;
import org.pushingpixels.substance.api.skin.TwilightSkin;

import de.yaams.maker.helper.Setting;
import de.yaams.maker.helper.SystemHelper;
import de.yaams.maker.helper.extensions.ExtentionManagement;
import de.yaams.maker.helper.extensions.IExtension;
import de.yaams.maker.helper.gui.YEx;
import de.yaams.maker.helper.gui.YMessagesDialog;
import de.yaams.maker.helper.gui.YSettingHelper;
import de.yaams.maker.helper.gui.form.FormComboBox;
import de.yaams.maker.helper.gui.form.FormElement;
import de.yaams.maker.helper.gui.form.FormElementChangeListener;
import de.yaams.maker.helper.gui.form.FormLink;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.form.core.FormHeader;
import de.yaams.maker.helper.gui.icons.IconCache;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.YAamsCore;
import de.yaams.maker.programm.YaFrame;
import de.yaams.maker.programm.plugins.BasePlugin;

/**
* @author Nebli
*
*/
public class SubstancePlugin extends BasePlugin {

  final static String[] className = { "0", BusinessSkin.class.getName(), BusinessBlueSteelSkin.class.getName(), BusinessBlackSteelSkin.class.getName(),
      CremeSkin.class.getName(), CremeCoffeeSkin.class.getName(), SaharaSkin.class.getName(), ModerateSkin.class.getName(),
      OfficeSilver2007Skin.class.getName(), OfficeBlue2007Skin.class.getName(), NebulaSkin.class.getName(), NebulaBrickWallSkin.class.getName(),
      AutumnSkin.class.getName(), MistSilverSkin.class.getName(), MistAquaSkin.class.getName(), DustSkin.class.getName(), DustCoffeeSkin.class.getName(),
      GeminiSkin.class.getName(), TwilightSkin.class.getName(), MagellanSkin.class.getName(), GraphiteSkin.class.getName(),
      GraphiteGlassSkin.class.getName(), GraphiteAquaSkin.class.getName(), RavenSkin.class.getName(), ChallengerDeepSkin.class.getName(),
      EmeraldDuskSkin.class.getName() };

  final static String[] classTitle = { "System", BusinessSkin.NAME, BusinessBlueSteelSkin.NAME, BusinessBlackSteelSkin.NAME, CremeSkin.NAME,
      CremeCoffeeSkin.NAME, SaharaSkin.NAME, ModerateSkin.NAME, OfficeSilver2007Skin.NAME, OfficeBlue2007Skin.NAME, NebulaSkin.NAME,
      NebulaBrickWallSkin.NAME, AutumnSkin.NAME, MistSilverSkin.NAME, MistAquaSkin.NAME, DustSkin.NAME, DustCoffeeSkin.NAME, GeminiSkin.NAME,
      TwilightSkin.NAME, MagellanSkin.NAME, GraphiteSkin.NAME, GraphiteGlassSkin.NAME, GraphiteAquaSkin.NAME, RavenSkin.NAME, ChallengerDeepSkin.NAME,
      EmeraldDuskSkin.NAME };

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.core.helper.plugins.BasePlugin#useable(de.yaams.core.helper.
   * gui.YMessagesDialog, int)
   */
  @Override
  public boolean useable(YMessagesDialog md) {
    return true;
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.core.helper.plugins.BasePlugin#start()
   */
  @Override
  public void start() {

    // add plugin
    IconCache.addPNG(SubstancePlugin.class, "substance");

    // set look and feel
    final String skin = Setting.get("substance", "0");

    if (skin != null && !skin.equals("0")) {
      ExtentionManagement.add("yaframe.start.finish", new IExtension() {

        @Override
        public void work(HashMap<String, Object> objects) {
          setWindowLook(Setting.get("substance.decoration", true));
          setSkin(skin);

        }
      });

    }

    // add setting
    ExtentionManagement.add("form.options.system", new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {
        FormBuilder f = (FormBuilder) objects.get("form");

        // add it
        f.addHeader("substance", new FormHeader(I18N.t("Look and Feel"), "substance").setColumn(4));

        FormComboBox c = YSettingHelper.combo(null, I18N.t("Look"), "substance", "0", className, classTitle);

        c.selectField(Setting.get("substance", "0"));
        c.addChangeListener(new FormElementChangeListener() {

          @Override
          public void stateChanged(FormElement form) {
            String skin = form.getContentAsString();
            YAamsCore.save();

            setSkin(skin);
          }
        });
        c.getBox().setRenderer(new SubstanceComboBoxRenderer());
        f.addElement("substance.look", c);

        f.addElement("substance.window", YSettingHelper.bool(null, I18N.t("Use System Window Decoration"), "substance.decoration", true)
            .addChangeListener(new FormElementChangeListener() {

              @Override
              public void stateChanged(FormElement form) {
                // set?
                setWindowLook(Boolean.getBoolean(form.getContentAsString()));
                YAamsCore.save();
              }
            }));

        String[] eles = new String[] { "default", "CamelThrownTrees", "CreteSenesi", "Gargoyle", "Hprich" };

        f.addElement("substance.startlogo", YSettingHelper.combo(null, I18N.t("Startlogo"), "substance.startlogo", eles[0], eles, eles));
      }
    });

    // add thanks
    ExtentionManagement.add("form.options.info", new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {
        ((FormBuilder) objects.get("form")).addElement("thx.substance", new FormLink("Substance", "https://substance.dev.java.net/"));

      }
    });
  }

  /**
   * @param skin
   */
  protected void setSkin(String skin) {
    // skin changed?
    if (Setting.get("substance", "0").equals(skin)) {
      return;
    }

    try {
      // set look and feel
      if (skin != null && !skin.equals("0")) {
        SubstanceLookAndFeel.setSkin(skin);
        // load it
        YMessagesDialog ymd = new YMessagesDialog(I18N.t("Kann Systemicons nicht laden."), "substance.systemicons");
        IconCache.loadSystmIcons(ymd);
        ymd.showOk();
      } else {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        // SwingUtilities.updateComponentTreeUI(YaFrame.get());
        SystemHelper.restart();
      }
    } catch (final Throwable t) {
      YEx.error("Can not set skin " + skin, t);
    }
  }

  /**
   * @param form
   */
  protected void setWindowLook(boolean set) {
    try {
      YaFrame.get().setVisible(false);
      // set it
      JFrame.setDefaultLookAndFeelDecorated(!set);
      // YaFrame.get().setUndecorated(!set);
      if (!set) {
        YaFrame.get().getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
      }
      YaFrame.get().setVisible(true);
    } catch (final Throwable t) {
      YEx.info("Can not set window look and feel " + set, t);
    }
  }

}
TOP

Related Classes of de.yaams.extensions.substance.SubstancePlugin

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.